可以不要這麼貼切嗎
==========
那這則我們來提一下迴圈的部分吧,各位讀者撐著,這篇完基礎的部分就差不多了!
Swift迴圈有:while、repeat-while、for-in
「while迴圈」
while 條件運算式 {
迴圈執行的程式敘述
}
while迴圈敘述要先判斷條件運算式是否為真
若為真true,則執行迴圈執行的程式敘述
若為假false,則結束迴圈
Example:
題目:請印出1加到32的值
var total = 0, index = 1
while index <= 32{
total += index
index += 1
}
print("1加到32的值為:\(total)")
好,那再讓我們把算出來的值再減去(8)並印出來
print("1加到32再減8的值為我想對妳說的話:(total-8)")
林宇你能幫我算看看多少嗎?
好(林宇)
[過段片刻]
嗯,我算完了,520(林宇)
嗯,對的,我也愛妳
呃,這坑太大了啦,正經點!!(林宇)
「repeat-while迴圈」
repeat-while迴圈會先執行一次程式,再檢查條件運算式,接著循迴圈執行程式直到條件運算式返回false
repeat {
迴圈執行的程式
} while 條件運算式
一樣拿while迴圈的敘述來範例吧
Example:
var total = 0,index = 1
repeat {
total += index
index += 1
}while index <= 32
print("1加到32的值為:\(total)")
print("1加到32再減8的值為我想對妳說的話:\(total-8)")
「for-in迴圈」
for item in items {
迴圈執行的程式敘述
}
for-in迴圈,會遍歷一個集合內的所有項目,像是一個數字區間、陣列、字典中的值之類
數字區間??
數字區間分別以 ... 和 ..< 表示
Example:
var total = 0
for n in 1...32 {
total += n
}
print("1加到32的值為:\(total)")
print("1加到32再減8的值為我想對妳說的話:\(total-8)")
「巢狀迴圈(nested loop)」
什麼是巢狀迴圈?
簡單說就是迴圈裡面還有個迴圈
那我們來個以前背的要死要活的東西吧「九九乘法表」
Example:
// 九九乘法表
for i in 1...9 {
for j in 1...9 {
print("\(i) * \(j) = \(i*j)")
}
print("\r")
}
==========
那好,迴圈講完了,來説説陣列吧
還有啊,頭好暈啊!(林宇)
快說完了,因為是基礎不會說太深的,深入的自己去研究吧
「集合型別」
Swift提供三種基本的集合型別:Array、Set、Dictionary 用來儲存集合資料
儲存的資料型別必須明確,且都只能儲存同一種型別的資料。
Array陣列:按順序儲存資料
Set集合:沒有順序,不能重複儲存資料
Dictionary字典:沒有順序,key : value(識別鍵 : 值),經由唯一的識別鍵找到需要的值
「陣列」
陣列(array)使用有序列表儲存同一型別的多個值
相同的值可以多次出現在一個陣列的不同位置中
陣列無帶預設值的方式為[Element](Element是表示的型別,Ex:Int、String、Double之類的
Example:
宣個一個空陣列,型別為String
var v1: [String] = []
而有帶預設值的方式為以下兩種:
var v1 = ["Go","Good"]
or
var v1: [String] = ["Go","Good"]
有注意到,為何第一項不用宣告型別嗎??
那是因為Swift會自動的型別推斷,所以陣列中如果明確的表示了是什麼型別的值,就不用再標註型別
Example:
宣告個陣列,並帶預設值,接著使用迴圈印出
var testValue = ["IT","鐵人賽","一極棒"]
for valueOutput in testValue {
print(valueOutput)
}
那好,迴圈講完了,來説説陣列吧
還有啊,頭好暈啊!(林宇)
快說完了,因為是基礎不會說太深的,深入的自己去研究吧
「集合型別」
Swift提供三種基本的集合型別:Array、Set、Dictionary 用來儲存集合資料
儲存的資料型別必須明確,且都只能儲存同一種型別的資料。
Array陣列:按順序儲存資料
Set集合:沒有順序,不能重複儲存資料
Dictionary字典:沒有順序,key : value(識別鍵 : 值),經由唯一的識別鍵找到需要的值
「陣列」
陣列(array)使用有序列表儲存同一型別的多個值
相同的值可以多次出現在一個陣列的不同位置中
陣列無帶預設值的方式為[Element](Element是表示的型別,Ex:Int、String、Double之類的
Example:
宣個一個空陣列,型別為String
var v1: [String] = []
而有帶預設值的方式為以下兩種:
var v1 = ["Go","Good"]
or
var v1: [String] = ["Go","Good"]
有注意到,為何第一項不用宣告型別嗎??
那是因為Swift會自動的型別推斷,所以陣列中如果明確的表示了是什麼型別的值,就不用再標註型別
Example:
宣告個陣列,並帶預設值,接著使用迴圈印出
var testValue = ["IT","鐵人賽","一極棒"]
for valueOutput in testValue {
print(valueOutput)
}
陣列的操作也是有屬性可用的,有count、isEmpty、insert、removeAtIndex(x)、removeLast
count是用來表示陣列內值的數量
isEmpty是用來檢查陣列內是否有值,並會返回一個布林值
insert是用來把指定值加入指定陣列位置
removeAtIndex(x)是用來指定位置資料
removeLast是用來刪除最後一筆資料
拿上個範例來體驗一下吧
Example:
var testValue = ["IT","鐵人賽","一極棒"]
testValue.count //算陣列數量
testValue.insert("超讚", at: 3) //加入指定位置
testValue.remove(at: 0) //刪除指定位置
testValue.removeLast() //刪除最後一筆
for valueOutput in testValue {
print(valueOutput)
}
「字典」
有兩種使用方法,都是通用的
var dict: Dictionary<鍵的型別, 值得型別>
or
var dict: [鍵的型別: 值的型別]
字典(dictionary)用來儲存多個相同型別的值
每個值(Value)都屬於一個唯一的鍵(Key),鍵作為字典中這個值的識別,所有鍵的型別也必須相同(鍵與值的型別不一定要相同)
更新指定鍵值
updateValue(value, forKey: key)
刪除指定鍵
removeValue(forKey: key)
Example:
var testValue: Dictionary<String, String> = ["v1":"IT","v2":"鐵人賽","v3":"一極棒"]
print("數量:",testValue.count) //算陣列數量
//列出值
for (code, value) in testValue {
print("\(code): \(value)")
}
//純列出key值
for code in testValue.keys {
print(code)
}
//純列出value值
for value in testValue.values {
print(value)
}
//更新指定鍵值
testValue.updateValue("超讚", forKey: "v3")
print(testValue["v3"])
//刪除指定鍵
testValue.removeValue(forKey: "v1")
//列出值
for (code, value) in testValue {
print("\(code): \(value)")
}